/**
 * \file Contour.h
 * \author Florian LANCE - Armand POLI
 * \version 1.0
 * \date novembre 2011
 */

#ifndef CONTOUR_H
#define CONTOUR_H

#include <complex>
#include <vector>
#include "Point.h"
#include "Image.h"
#include "FFT.h"


typedef unsigned int uint;

/**
* @class Classe Contour
*/
class Contour
{
    public:

        /** @brief Constructeur par défaut de Contour. */
        Contour();
        /** @brief Constructeur de Contour à partir d'un tableau de points de contours. */
        Contour(std::vector<Point> tabPoints);
        ~Contour();

       /** @brief Affiche un tableau de complexe. */
        void aff(tab_cx &tabC);

       /** @brief Calcul de la transformée de fourier de la sequence du contour. */
       tab_cx calculTF();
       /** @brief Calcul de la transformée de fourier inverse à partir de la suiteFourier. */
       tab_cx calculInvTF();
       /** @brief Calcul de la du filtre du contour à partir de suiteFourier et du nombre d'harmonique en paramètre. */
       tab_cx calculFiltreTF(const int K);

       /** @brief Retourne la séquence du contour. */
       tab_cx S() const;
       /** @brief Retourne la TF du contour. */
       tab_cx TF() const;
       /** @brief Retourne le résultat de l'application du filtre sur le contour. */
       tab_cx Filtre() const;
//       tab_cx calculTFRapide(const int _K);

       /** @brief Enregistrement du contour à partir du chemin s. */
        void enregistrerContour(const std::string &s);

        /** @brief Initialise la séquence à partir du chemin d'un fichier de contour.*/
        void chargerContour(const std::string &s);

    private:

       tab_cx sequence;     /**< Tableau de complexes de la sequence contenant les contours. */
       tab_cx suiteFourier; /**< Tableau de complexes de contenant la transformée de fourier de la séquence. */
       tab_cx filtre;       /**< Tableau de complexes de contenant le résultat de l'application du filtre sur la transformée de fourier. */

       int N;              /**< Taille de la séquence. */

};

#endif // CONTOUR_H
